/* * Sun Public License Notice * * The contents of this file are subject to the Sun Public License * Version 1.0 (the "License"). You may not use this file except in * compliance with the License. A copy of the License is available at * http://www.sun.com/ * * The Original Code is Forte for Java, Community Edition. The Initial * Developer of the Original Code is Sun Microsystems, Inc. Portions * Copyright 1997-2000 Sun Microsystems, Inc. All Rights Reserved. */ package org.netbeans.modules.form.forminfo; import java.awt.*; import javax.swing.JPanel; import org.netbeans.modules.form.MenuBarContainer; /** FormInfo for java.awt.Frame. * * @author Ian Formanek */ public class FrameFormInfo extends FormInfo implements MenuBarContainer { // -------------------------------------------------------------------------------------- // Private variables /** The form instance */ private Frame formInstance; /** The form top-level container */ private JPanel topPanel; /** The form top-level container for adding */ private JPanel innerPanel; private javax.swing.JMenuBar currentMenu = null; private boolean initialized = false; // -------------------------------------------------------------------------------------- // FormInfo methods /** Used to create the design-time instance of the form object, which is used only for * displaing properties and events of the form. I.e. it is not displayed visually, instead * the FormTopComponent is used with the container provided from <code>getTopContainer ()</code> method. * @return the instance of the form * @see #getTopContainer */ public Object getFormInstance () { if (formInstance == null) { formInstance = new Frame (); // we must set these explicitly, as the window is never displayed and the fornt and colors would stay null formInstance.setBackground (SystemColor.window); formInstance.setForeground (SystemColor.windowText); formInstance.setFont (new Font ("Dialog", Font.PLAIN, 12)); // NOI18N } return formInstance; } /** Used to provide the container which is used during design-time as the top-level container. * The container provided by this class should not be a Window, as it is added as a component to the * FormTopComponent, rather a JPanel, Panel or JDesktopPane should be used according to the form type. * By returning a <code>null</code> value, the form info declares that it does not represent a "visual" form and the visual * ediuting should not be used with it. * @return the top level container which will be used during design-time or null if the form is not visual */ public Container getTopContainer () { if (!initialized) { initialize (); } return topPanel; } /** Used to provide the container which is used during design-time as the top-level container for adding components. * The container provided by this class should not be a Window, as it is added as a component to the * FormTopComponent, rather a JPanel, Panel or JDesktopPane should be used according to the form type. * By returning a <code>null</code> value, the form info declares that it does not represent a "visual" form and the visual * ediuting should not be used with it. * @return the top level container which will be used during design-time or null if the form is not visual */ public Container getTopAddContainer () { if (!initialized) { initialize (); } return innerPanel; } private void initialize () { topPanel = new JPanel (); topPanel.setLayout (new java.awt.BorderLayout ()); topPanel.add (innerPanel = new JPanel ()); innerPanel.setLayout (new java.awt.BorderLayout ()); initialized = true; } // -------------------------------------------------------------------------------------- // JMenuBarContainer implementation /** Can be used to set the MenuBar of this form. * @param menuBar The MenuBar component or null to set no menu. */ public void setMenuBar (MenuBar menuBar) { getFormInstance (); // enforce creation if not initialized yet formInstance.setMenuBar (menuBar); if (currentMenu != null) { topPanel.remove (currentMenu); } if (menuBar!=null) { currentMenu = (javax.swing.JMenuBar) org.netbeans.modules.form.RADMenuItemComponent.findDesignTimeMenu (menuBar); topPanel.add (currentMenu, java.awt.BorderLayout.NORTH); } topPanel.validate (); topPanel.repaint (); } /** Can be used to obtain the MenuBar of this form. * @return The MenuBar component or null if no menu is set. */ public MenuBar getMenuBar () { getFormInstance (); // enforce creation if not initialized yet return formInstance.getMenuBar (); } } /* * Log * 8 Gandalf 1.7 1/17/00 Pavel Buzek setting menubar to null * did not work (fixed) * 7 Gandalf 1.6 1/5/00 Ian Formanek NOI18N * 6 Gandalf 1.5 12/2/99 Pavel Buzek AWT menu is displayed in * form at design time (a swing equivalent is created for each awt menu * and displyed instead) * 5 Gandalf 1.4 10/23/99 Ian Formanek NO SEMANTIC CHANGE - Sun * Microsystems Copyright in File Comment * 4 Gandalf 1.3 9/6/99 Ian Formanek Fixed bug 3448 - Menu * added to AWT form is not set to frame in code. * 3 Gandalf 1.2 9/6/99 Ian Formanek Fixed bug 3230 - When I * instantiate new AWTform, background is set to null which causes * Exception when trying to use property editor. * 2 Gandalf 1.1 6/6/99 Ian Formanek FormInfo design * finalized * 1 Gandalf 1.0 5/12/99 Ian Formanek * $ */